home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 4 / Info_Mac IV CD-ROM (Pacific HiTech Inc.)(August 1994).iso / Development / Source / DBL Pascal Library / ErrSignal / TestSignals_1.p < prev    next >
Text File  |  1991-03-29  |  1KB  |  93 lines

  1. program TestSignals;
  2.  
  3.     uses
  4.         ErrSignal;
  5.  
  6.     type
  7.         foo = object
  8.                 procedure bar (a, b: integer);
  9.             end;
  10.  
  11.  
  12.     procedure Proc1;
  13.         var
  14.             catch: OSErr;
  15.         label
  16.             99;
  17.     begin
  18. {•  Signal(9);•}
  19.         catch := CatchSignal;
  20.         if catch <> noErr then
  21.             begin
  22.                 writeln('catch in Proc1 returned ', catch : 1);
  23.                 SignalHandlerDone;
  24. {•    goto 99;•}
  25.                 Exit(Proc1);
  26.                 TerminateSignalHandler;
  27.             end;
  28.         if CatchInBlock then
  29.             writeln('catch established in Proc1');
  30.         Signal(2);
  31. 99:
  32.     end;
  33.  
  34.     procedure foo.bar (a, b: integer);
  35.     begin
  36.         a := b + 1;
  37.     end;
  38.  
  39.     procedure Proc2;
  40.         var
  41.             baz: foo;
  42.     begin
  43.         Proc1;
  44.         Signal(3);
  45.         new(baz);
  46.         baz.bar(1, 2);
  47.     end;
  48.  
  49.     procedure Start;
  50.         var
  51.             catch: OSErr;
  52.     begin
  53.         InitSignals(sigFail);
  54.         catch := CatchSignal;
  55.         if catch <> noErr then
  56.             begin
  57.                 writeln('catch in Start returned ', catch : 1);
  58.                 Halt;
  59.             end;
  60.         writeln('catch established in Start');
  61.         Proc2;
  62.     end;
  63.  
  64.     procedure Proc3 (a: Boolean);
  65.         label
  66.             99;
  67.         procedure Proc4;
  68.             procedure Proc5;
  69.                 procedure Proc6;
  70.                     procedure Proc7;
  71.                     begin
  72.                         if a then
  73.                             goto 99;
  74.                     end; {Proc7}
  75.                 begin
  76.                     Proc7;
  77.                     Exit(Proc5);
  78.                 end; {Proc6}
  79.             begin
  80.                 Proc6;
  81.             end; {Proc5}
  82.         begin
  83.             Proc5;
  84.         end; {Proc4}
  85.     begin
  86.         Proc4;
  87. 99:
  88.     end; {Proc3}
  89.  
  90. begin
  91.     ShowText;
  92.     Start;
  93. end.